Redundancy in a sequence of digital images may occur when the appearance of a given picture is similar to that of a previous or subsequent picture in the sequence. Many compression techniques take advantage of this redundancy by expressing the differences of a current region in the picture to a reference region in a previous or subsequent picture in the sequence. In particular, when the same object occurs in both regions, but at different locations within the picture, the change in location may be encoded as a motion vector.
Usually the picture is divided into blocks. In such cases, motion estimation is the process of finding the block in the reference picture that bests matches the current block presently being encoded in the current picture. Typically, the block that globally minimizes a matching criterion is selected as the best matched block—the reference block.
Motion estimation is one of the most intensive computation components of an encoder. Some of the existing motion estimation techniques, when implemented on a digital signal processor or all application specific integrated circuit, require more memory than that available internally. Accessing external memory imposes a severe delay in a real-time system.
Therefore, it would be beneficial to reduce the amount of time spent on such computations and to reduce the amount of memory required to perform the computations while providing accurate motion vectors.
Appendix A is exemplary computer code for calculating low frequency coefficients.
It will be appreciated that for simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements for clarity. Further, where considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or analogous elements.